// 定义变量使用let或var，用let定义的不可再声明（赋值），用var声明的可被覆盖重新赋值
let a = 10;
a++;
console.log(a)

let a = 20
//给a重新声明，会报错，提示重新声明
a = "helloworld"
//不重新声明的情况下，弱类型的js语言可随时变化为其他类型。
// js并不是Java那样的强类型语言（任意变量的类型一定是明确的），它是一门弱类型语言，变量的类型并不会在一开始确定，因此我们在定义变量时无需指定变量的确切类型，而是在运行时动态解析类型：


var b = 20;
console.log(typeof b)
var b = "hello js"
console.log(typeof b)
//使用var声明的变量可以被重新声明替换，所以为了参数传递安全，建议使用let

/*
js中的基本数据类型
Number： 数字类型（包括整数和小数）
String: 字符串类型（可以使用单引号或双引号）
Boolean： 布尔类型（与java一致）

还包括一些特殊值
undefined: 未定义，变量声明了，但不赋值，默认为undefined
null: 控制 等同于java中的null
NaN：非数字 Not a Num的缩写，表示值不是合法数组，如100/'xx'

 */
//使用typeof查看变量类型
let c = "hello javascript"
console.log(typeof c)
let d = 123
console.log(d)